import requests
from bs4 import BeautifulSoup
from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes

# Função para obter os repositórios em tendência no GitHub
def get_trending_repos():
    r = requests.get('https://github.com/trending')
    soup = BeautifulSoup(r.content, 'html.parser')

    case_article = soup.find_all('article', class_="Box-row")
    repos = []

    for case in case_article:
        author_repo = case.find('h2', class_="h3 lh-condensed").find('a')
        link = author_repo['href']
        
        info = case.find('div', class_="f6 color-fg-muted mt-2")
        try:
            lang = info.find('span', itemprop="programmingLanguage").text.strip()
        except AttributeError:
            lang = 'N/A'
        
        case_a = info.find_all('a')
        stars = case_a[0].text.strip()
        forks = case_a[1].text.strip()

        try:
            details = case.find('p', class_="col-9 color-fg-muted my-1 pr-4").text.strip()
        except AttributeError:
            details = 'No description provided.'

        repos.append(f'https://github.com{link} \nLanguage: {lang} \nStars: {stars} \nForks: {forks} \n{details} \n')

    return repos

# Função para o comando /start
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    await update.message.reply_text('Olá! Eu sou o seu bot do Telegram para repositórios em tendência no GitHub. Use o comando /trending para ver os repositórios.')

# Função para o comando /trending
async def trending(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    repos = get_trending_repos()
    if repos:
        response = "\n".join(repos)
    else:
        response = "Não foi possível obter os repositórios em tendência."

    await update.message.reply_text(response)

# Configuração principal do bot
def main():
    # Coloque aqui o seu token do bot
    token = "Seu_token_telegram"
    application = ApplicationBuilder().token(token).build()

    application.add_handler(CommandHandler("start", start))
    application.add_handler(CommandHandler("trending", trending))

    application.run_polling()

if __name__ == '__main__':
    main()